package pe.com.cotelasa.scp.dominio.servicio.impl;

import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import org.springframework.stereotype.Service;
import pe.com.cotelasa.common.dao.excepcion.DAOException;
import pe.com.cotelasa.scp.entidad.ComposicionArticulo;
import pe.com.cotelasa.scp.dao.IDAOComposicionArticulo;
import pe.com.cotelasa.scp.dominio.common.ESTADO_REGISTRO;
import pe.com.cotelasa.scp.dominio.common.ESTADO_RESULTADO;
import pe.com.cotelasa.scp.dominio.common.ResultadoServicio;
import pe.com.cotelasa.scp.dominio.excepcion.ServiceException;
import pe.com.cotelasa.scp.dominio.service.IServicioComposicionArticulo;

@Service
public class ServicioComposicionArticuloImpl implements IServicioComposicionArticulo, Serializable {
    
    @Inject
    private IDAOComposicionArticulo daoComposicionArticulo;
    
    @Override
    public ResultadoServicio guardarComposicionArticulo(ComposicionArticulo contacto) throws ServiceException {
        ResultadoServicio resultadoServicio = new ResultadoServicio(ESTADO_RESULTADO.EXITOSO);
        try {
            contacto.setEstadoRegistro(ESTADO_REGISTRO.ACTIVO.getValor());
            daoComposicionArticulo.insertar(contacto);
        } catch (DAOException ex) {
            throw new ServiceException(ex.getMessage(), ex);
        }
        return resultadoServicio;
    }
    
    @Override
    public ResultadoServicio actualizarComposicionArticulo(ComposicionArticulo composicionArticulo)
            throws ServiceException {
        try {
            daoComposicionArticulo.actualizar(composicionArticulo);
        } catch (DAOException e) {
            throw new ServiceException(e.getMessage(), e);
        }
        return null;
    }
    
    @Override
    public Collection<ComposicionArticulo> buscarComposicionPorArticulo(ComposicionArticulo composicionArticulo)
            throws ServiceException {
        try {
            return daoComposicionArticulo.buscarComposicionPorArticulo(composicionArticulo);
        } catch (DAOException e) {
            throw new ServiceException(e.getMessage(), e);
        }
         
    }
    
    @Override
    public Collection<ComposicionArticulo> buscarArticulosPorComposicion(ComposicionArticulo composicionArticulo)
            throws ServiceException {
        try {
            Map<String, Object> parametro = new HashMap<String, Object>();
            parametro.put("idArticuloComp", composicionArticulo.getIdArticuloComp().getId());
            parametro.put("estadoRegistro", ESTADO_REGISTRO.ACTIVO.getValor());
            return daoComposicionArticulo.obtenerColeccionEntidadPorFiltros(ComposicionArticulo.class, parametro);
            //return daoComposicionArticulo.buscarArticulosPorComposicion(composicionArticulo);
        } catch (DAOException e) {
            throw new ServiceException(e.getMessage(), e);
        }
         
    }
    
    @Override
    public Collection<ComposicionArticulo> buscarArticulosPorComposicionYModelo(ComposicionArticulo composicionArticulo)
            throws ServiceException {
        try {
            return daoComposicionArticulo.buscarArticulosPorComposicionYModelo(composicionArticulo);
        } catch (DAOException e) {
            throw new ServiceException(e.getMessage(), e);
        }
         
    }
    
}
